;
;	����� ����������� ������������������ �����
;	----------------------------------------------
; �����: DL �������� ��������� �����
; ������: Write_digit_hex
;
Write_byte_hex:
	push	bx
	push	cx
	mov	bl,dl
	mov	cl,4h
	shr	bl,cl			;����� ������ �� 4 �������
	call	Write_digit_hex		;����� ������� �����
	mov	bl,dl
	and	bl,0fh			;��������� �������� ���������
	call	Write_digit_hex		;����� ������� �����
	pop	cx 
	pop	bx
	ret
;
;	����� ����������������� �����
;	-------------------------------
; �����: BL �������� ����������������� �����
; ������: Write_char
Write_digit_hex:
	push	dx
	mov	dl,bl
	cmp	dl,09h			;���� DL>9, �� ��������� �� .ja 
	ja	.ja                  
	add	dl,30h              	;�� 0 �� 9 + 30h
	jmp	.jmp
.ja:	add	dl,37h              	;�� A �� F + 37h
.jmp:	call	Write_char 
	pop	dx
	ret
;
;	����� ������� �� �����
;	----------------------
; �����: DL �������� ��� �������, ���������� �� �����
;
Write_char:
	push	ax
	cmp	dl,20h			;���� ��� ������� ������ 20h
	jae	.jae			; �� �������
	mov	dl,2Eh			; �����
.jae:	mov	ax,0200h		;������� ������ �������
	int	21h			;����� ������� �� �����
	pop	ax
	ret
;
;	����� ����������� ������������� ����� ������
;	--------------------------------------------
; �����: DX �������� ��������� �����
; ������: Write_digit_hex
;
Write_word_dec:
	push	ax
	push	bx
	push	cx
	push	dx
	pushf
	mov	ax,dx
	mov	bx,0Ah
	xor	cx,cx		;�������� �������� CX
.M1:	xor	dx,dx		; � DX
	div	bx              ;�������� DX:AX �� 10
	push	dx		;�������� ������� � ����
	inc	cx		;�������� �������
	or	ax,ax		;���� ������� �� ����� 0
	jnz	.M1		; ��������� �������
.M2:	pop	bx              ;��������� ������ ����� �� �����
	call	Write_digit_hex	; � ������� �� �����
	dec	cx		;��������� �������
	or	cx,cx           ;���� ������� �� ����� 0 
	jnz	.M2		; ��������� ����
	popf
	pop	dx
	pop	cx
	pop	bx
	pop	ax
	ret
;
;	����� ������������������ ����� �� ������ ����� ������ ����� ������� �����
;	-------------------------------------------------------------------------
; �����: DX �������� ��������� �����
; ������: Write_digit_hex
;
Write_word_hex1:
	push	ax
	push	bx
	push	cx
	push	dx
	pushf
	mov	ax,dx
	mov	bx,10h
	xor	cx,cx		;�������� �������� CX
.M1:	xor	dx,dx		; � DX
	div	bx              ;�������� DX:AX �� 10
	push	dx		;�������� ������� � ����
	inc	cx		;�������� �������
	or	ax,ax		;���� ������� �� ����� 0
	jnz	.M1		; ��������� �������
.M2:	pop	bx              ;��������� ������ ����� �� �����
	call	Write_digit_hex	; � ������� �� �����
	dec	cx		;��������� �������
	or	cx,cx           ;���� ������� �� ����� 0 
	jnz	.M2		; ��������� ����
	popf
	pop	dx
	pop	cx
	pop	bx
	pop	ax
	ret
;
;	����� ������������������ ����� �� ������ ����� ������ ������ �����
;	-------------------------------------------------------------------------
; �����: DX �������� ��������� �����
; ������: Write_byte_hex
;
Write_word_hex:
	push bx
	push cx
	push dx
	mov bx,dx
	mov cl,8h
	shr dx,cl		;����� ������ �� 8 ��������
	call Write_byte_hex	;����� �������� �����
	mov dx,bx
	call Write_byte_hex	;����� �������� �����
	pop dx
	pop cx 
	pop bx
	ret